[小ネタ]Lookerのmeasure type:listを使ってみる #looker
Lookerのメジャータイプには様々なものが用意されています。今回はその中であまりなじみのなかったlist
を使ってみました。
メジャータイプ『list』とは
パラメーター名から想像できる通りtype:list
では、指定したディメンションの値をリストとして表示することができるメジャータイプです。このメジャータイプではsql
パラメーターが不要で、代わりにlist_field
パラメーターでリスト化するフィールドを宣言します。
早速使ってみる
Viewファイルの定義
- 部門ごとのカテゴリをリスト化する想定でフィールドを定義しました
dimension: department { label: "部門" sql: TRIM(${TABLE}.department) ;; } dimension: category { label: "カテゴリ" sql: TRIM(${TABLE}.category) ;; } measure: category_list { type: list list_field: category }
Exploreで結果を確認
- 結果を確認すると、部門ごとのカテゴリがリスト化されて算出されていました!
メジャータイプ『string』でも同じことができそうである
メジャータイプ『string』とは
Lookerにはメジャータイプtype:string
というのも存在します。type:string
では、結果が文字列になるSQL 式を使用できますが、基本的にメジャーは数値で表すものがほとんどなので、この計算タイプの出番は基本的にはありません。しかし、一般的な例外としてあるのが文字列をリストで返すような関数になります。つまり、type:list
は、そういった関数をLookerが事前定義してくれたメジャータイプということになります。
『list』と『string』両方使ってみる
- 先ほどのViewファイルに、
type:string
で定義したカテゴリーリストを追加します
dimension: department { label: "部門" sql: TRIM(${TABLE}.department) ;; } dimension: category { label: "カテゴリ" sql: TRIM(${TABLE}.category) ;; } measure: category_list { type: list list_field: category } measure: category_string2 { type: string sql: STRING_AGG( DISTINCT ${category} ORDER BY ${category}) ;; }
Exploreで結果を確認
- 以下の通り、どちらも同じ結果になりました!
リスト化を行いたいときの『string』ユースケースについて
- 検証した通り、リスト化する場合の結果については
type:string
でもtype:list
でも変わらないので、type:list
を使う方が便利だと感じました。 - しかし、あえて
type:string
を使うとすれば、並び替えの順序を変えたり、結合記号を変えたい場合に使うのが良いのかなと思います。
measure: category_list { type: list list_field: category } measure: category_string2 { type: string sql: STRING_AGG( DISTINCT ${category} ," _ " ORDER BY ${category} desc) ;; ##並び順を降順にして、結合記号をアンダースコアにする }
さいごに
いかがでしたでしょうか。改めて、Lookerは便利なパラメーターが取り揃えられているな、と感じました。今後も色々な機能を試していきたいと思います。